Skip to content

Instantly share code, notes, and snippets.

@KrishnB
Created July 6, 2020 05:05
Show Gist options
  • Save KrishnB/4761203f66a25fd04569faa49ee3938a to your computer and use it in GitHub Desktop.
Save KrishnB/4761203f66a25fd04569faa49ee3938a to your computer and use it in GitHub Desktop.
public class RetryEngine {
private RetryTemplate retryTemplate;
public RetryEngine(int numberOfRetries, Class<? extends Throwable> exceptionToRetry) {
Map<Class<? extends Throwable>, Boolean> map = new HashMap<>();
map.put(exceptionToRetry, true);
retryTemplate = initRetryTemplate(numberOfRetries, map);
}
public RetryEngine(Class<? extends Throwable> exceptionToRetry) {
this(100, exceptionToRetry);
}
public RetryEngine(int numberOfRetries, Map<Class<? extends Throwable>, Boolean> exceptionMap) {
retryTemplate = initRetryTemplate(numberOfRetries, exceptionMap);
}
public RetryEngine(Map<Class<? extends Throwable>, Boolean> exceptionMap) {
this(10, exceptionMap);
}
private RetryTemplate initRetryTemplate(int numberOfRetries, Map<Class<? extends Throwable>, Boolean> exceptionMap) {
RetryTemplate retryTemplate = new RetryTemplate();
FixedBackOffPolicy fixedBackOffPolicy = new FixedBackOffPolicy();
fixedBackOffPolicy.setBackOffPeriod(5000);
retryTemplate.setBackOffPolicy(fixedBackOffPolicy);
SimpleRetryPolicy simpleRetryPolicy = new SimpleRetryPolicy(numberOfRetries, exceptionMap);
retryTemplate.setRetryPolicy(simpleRetryPolicy);
return retryTemplate;
}
public void execute(RetryCallback retryCallback) {
retryTemplate.execute(retryCallback);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment